package demo1;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: mirac
 * Date: 2025-09-24
 * Time: 17:20
 */
public class Solution {
    public int strStr(String haystack, String needle) {
        // 处理空字符串情况
        if (needle == null || needle.isEmpty()) {
            return 0;
        }
        if (haystack == null || haystack.length() < needle.length()) {
            return -1;
        }

        int ans = -1; // 初始值设为-1更合理
        // 外层循环控制在有效范围内
        for (int i = 0; i < haystack.length();) {
            int j = 0;
            int key = i;
            boolean flag = true;

            // 检查当前位置是否匹配
            while (j < needle.length()) {
                // 首先检查当前i是否有效
                if (i >= haystack.length()) {
                    flag = false;
                    break;
                }

                // 比较字符
                if (haystack.charAt(i) != needle.charAt(j)) {
                    flag = false;
                    break;
                }

                // 准备下一次比较，先检查是否会越界
                if (j + 1 < needle.length()) { // 如果还需要比较下一个字符
                    if (i + 1 >= haystack.length()) { // 主串已到末尾
                        flag = false;
                        break;
                    }
                }

                // 安全地递增索引
                i++;
                j++;
            }

            if (flag) {
                ans = key;
                break;
            } else {
                // 匹配失败，回到起始位置的下一个
                if (i == key) {
                    i++;
                } else {
                    i = key + 1;
                }
            }
        }
        return ans;
    }
}
